// 模拟一个异步任务函数，返回一个 Promise
function asyncTask(taskName, delay) {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log(`${taskName} completed after ${delay}ms`);
            resolve();
        }, delay);
    });
}
 
// 模拟一个每秒执行一次的定时器任务
function intervalTask(taskName) {
    setInterval(() => {
        console.log(`${taskName} executed every second`);
    }, 1000);
}
 
// 异步函数，使用 async/await 来控制任务执行顺序
async function executeTasks() {
    console.log("Starting task execution...");
 
    // 串行执行多个异步任务
    await asyncTask("Task 1", 2000);
    await asyncTask("Task 2", 1000);
    await asyncTask("Task 3", 1500);
 
    // 并行执行多个异步任务
    console.log("Starting parallel tasks...");
    const parallelTasks = [
        asyncTask("Parallel Task 1", 500),
        asyncTask("Parallel Task 2", 300),
        asyncTask("Parallel Task 3", 400)
    ];
 
    await Promise.all(parallelTasks);
 
    console.log("All parallel tasks completed.");
 
    // 启动一个定时器任务
    intervalTask("Interval Task");
 
    // 等待一段时间以观察定时器任务输出，然后退出
    await asyncTask("Final Wait", 5000);
    console.log("Final Wait completed, exiting...");
}
 
// 开始执行任务
executeTasks();